{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ResnetTrick_s128\n",
    "\n",
    "> first experiments size 128"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# setup and imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install git+https://github.com/ayasyrev/model_constructor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install git+https://github.com/kornia/kornia"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from kornia.contrib import MaxBlurPool2d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from fastai.basic_train import *\n",
    "from fastai.vision import *\n",
    "from fastai.script import *\n",
    "from model_constructor.net import *\n",
    "from model_constructor.layers import SimpleSelfAttention, ConvLayer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import torch\n",
    "from torch.optim.optimizer import Optimizer, required\n",
    "import itertools as it"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# utils"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Mish(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        # print(\"Mish activation loaded...\")\n",
    "\n",
    "    def forward(self, x):  \n",
    "        #save 1 second per epoch with no x= x*() and then return x...just inline it.\n",
    "        return x *( torch.tanh(F.softplus(x))) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Ranger deep learning optimizer - RAdam + Lookahead combined.\n",
    "  #https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer\n",
    "\n",
    "  #Ranger has now been used to capture 12 records on the FastAI leaderboard.\n",
    "\n",
    "  #This version = 9.3.19  \n",
    "\n",
    "  #Credits:\n",
    "  #RAdam -->  https://github.com/LiyuanLucasLiu/RAdam\n",
    "  #Lookahead --> rewritten by lessw2020, but big thanks to Github @LonePatient and @RWightman for ideas from their code.\n",
    "  #Lookahead paper --> MZhang,G Hinton  https://arxiv.org/abs/1907.08610\n",
    "\n",
    "  #summary of changes: \n",
    "  #full code integration with all updates at param level instead of group, moves slow weights into state dict (from generic weights), \n",
    "  #supports group learning rates (thanks @SHolderbach), fixes sporadic load from saved model issues.\n",
    "  #changes 8/31/19 - fix references to *self*.N_sma_threshold; \n",
    "                  #changed eps to 1e-5 as better default than 1e-8.\n",
    "\n",
    "class Ranger(Optimizer):\n",
    "\n",
    "    def __init__(self, params, lr=1e-3, alpha=0.5, k=6, N_sma_threshhold=5, betas=(.95,0.999), eps=1e-5, weight_decay=0):\n",
    "        #parameter checks\n",
    "        if not 0.0 <= alpha <= 1.0:\n",
    "            raise ValueError(f'Invalid slow update rate: {alpha}')\n",
    "        if not 1 <= k:\n",
    "            raise ValueError(f'Invalid lookahead steps: {k}')\n",
    "        if not lr > 0:\n",
    "            raise ValueError(f'Invalid Learning Rate: {lr}')\n",
    "        if not eps > 0:\n",
    "            raise ValueError(f'Invalid eps: {eps}')\n",
    "\n",
    "        #parameter comments:\n",
    "        # beta1 (momentum) of .95 seems to work better than .90...\n",
    "        #N_sma_threshold of 5 seems better in testing than 4.\n",
    "        #In both cases, worth testing on your dataset (.90 vs .95, 4 vs 5) to make sure which works best for you.\n",
    "\n",
    "        #prep defaults and init torch.optim base\n",
    "        defaults = dict(lr=lr, alpha=alpha, k=k, step_counter=0, betas=betas, N_sma_threshhold=N_sma_threshhold, eps=eps, weight_decay=weight_decay)\n",
    "        super().__init__(params,defaults)\n",
    "\n",
    "        #adjustable threshold\n",
    "        self.N_sma_threshhold = N_sma_threshhold\n",
    "\n",
    "        #now we can get to work...\n",
    "        #removed as we now use step from RAdam...no need for duplicate step counting\n",
    "        #for group in self.param_groups:\n",
    "        #    group[\"step_counter\"] = 0\n",
    "            #print(\"group step counter init\")\n",
    "\n",
    "        #look ahead params\n",
    "        self.alpha = alpha\n",
    "        self.k = k \n",
    "\n",
    "        #radam buffer for state\n",
    "        self.radam_buffer = [[None,None,None] for ind in range(10)]\n",
    "\n",
    "        #self.first_run_check=0\n",
    "\n",
    "        #lookahead weights\n",
    "        #9/2/19 - lookahead param tensors have been moved to state storage.  \n",
    "        #This should resolve issues with load/save where weights were left in GPU memory from first load, slowing down future runs.\n",
    "\n",
    "        #self.slow_weights = [[p.clone().detach() for p in group['params']]\n",
    "        #                     for group in self.param_groups]\n",
    "\n",
    "        #don't use grad for lookahead weights\n",
    "        #for w in it.chain(*self.slow_weights):\n",
    "        #    w.requires_grad = False\n",
    "\n",
    "    def __setstate__(self, state):\n",
    "        print(\"set state called\")\n",
    "        super(Ranger, self).__setstate__(state)\n",
    "\n",
    "\n",
    "    def step(self, closure=None):\n",
    "        loss = None\n",
    "        #note - below is commented out b/c I have other work that passes back the loss as a float, and thus not a callable closure.  \n",
    "        #Uncomment if you need to use the actual closure...\n",
    "\n",
    "        #if closure is not None:\n",
    "            #loss = closure()\n",
    "\n",
    "        #Evaluate averages and grad, update param tensors\n",
    "        for group in self.param_groups:\n",
    "\n",
    "            for p in group['params']:\n",
    "                if p.grad is None:\n",
    "                    continue\n",
    "                grad = p.grad.data.float()\n",
    "                if grad.is_sparse:\n",
    "                    raise RuntimeError('Ranger optimizer does not support sparse gradients')\n",
    "\n",
    "                p_data_fp32 = p.data.float()\n",
    "\n",
    "                state = self.state[p]  #get state dict for this param\n",
    "\n",
    "                if len(state) == 0:   #if first time to run...init dictionary with our desired entries\n",
    "                    #if self.first_run_check==0:\n",
    "                        #self.first_run_check=1\n",
    "                        #print(\"Initializing slow buffer...should not see this at load from saved model!\")\n",
    "                    state['step'] = 0\n",
    "                    state['exp_avg'] = torch.zeros_like(p_data_fp32)\n",
    "                    state['exp_avg_sq'] = torch.zeros_like(p_data_fp32)\n",
    "\n",
    "                    #look ahead weight storage now in state dict \n",
    "                    state['slow_buffer'] = torch.empty_like(p.data)\n",
    "                    state['slow_buffer'].copy_(p.data)\n",
    "\n",
    "                else:\n",
    "                    state['exp_avg'] = state['exp_avg'].type_as(p_data_fp32)\n",
    "                    state['exp_avg_sq'] = state['exp_avg_sq'].type_as(p_data_fp32)\n",
    "\n",
    "                #begin computations \n",
    "                exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq']\n",
    "                beta1, beta2 = group['betas']\n",
    "\n",
    "                #compute variance mov avg\n",
    "                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n",
    "                #compute mean moving avg\n",
    "                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n",
    "\n",
    "                state['step'] += 1\n",
    "\n",
    "\n",
    "                buffered = self.radam_buffer[int(state['step'] % 10)]\n",
    "                if state['step'] == buffered[0]:\n",
    "                    N_sma, step_size = buffered[1], buffered[2]\n",
    "                else:\n",
    "                    buffered[0] = state['step']\n",
    "                    beta2_t = beta2 ** state['step']\n",
    "                    N_sma_max = 2 / (1 - beta2) - 1\n",
    "                    N_sma = N_sma_max - 2 * state['step'] * beta2_t / (1 - beta2_t)\n",
    "                    buffered[1] = N_sma\n",
    "                    if N_sma > self.N_sma_threshhold:\n",
    "                        step_size = math.sqrt((1 - beta2_t) * (N_sma - 4) / (N_sma_max - 4) * (N_sma - 2) / N_sma * N_sma_max / (N_sma_max - 2)) / (1 - beta1 ** state['step'])\n",
    "                    else:\n",
    "                        step_size = 1.0 / (1 - beta1 ** state['step'])\n",
    "                    buffered[2] = step_size\n",
    "\n",
    "                if group['weight_decay'] != 0:\n",
    "                    p_data_fp32.add_(-group['weight_decay'] * group['lr'], p_data_fp32)\n",
    "\n",
    "                if N_sma > self.N_sma_threshhold:\n",
    "                    denom = exp_avg_sq.sqrt().add_(group['eps'])\n",
    "                    p_data_fp32.addcdiv_(-step_size * group['lr'], exp_avg, denom)\n",
    "                else:\n",
    "                    p_data_fp32.add_(-step_size * group['lr'], exp_avg)\n",
    "\n",
    "                p.data.copy_(p_data_fp32)\n",
    "\n",
    "                #integrated look ahead...\n",
    "                #we do it at the param level instead of group level\n",
    "                if state['step'] % group['k'] == 0:\n",
    "                    slow_p = state['slow_buffer'] #get access to slow param tensor\n",
    "                    slow_p.add_(self.alpha, p.data - slow_p)  #(fast weights - slow weights) * alpha\n",
    "                    p.data.copy_(slow_p)  #copy interpolated weights to RAdam param tensor\n",
    "\n",
    "        return loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_data(size=128, woof=1, bs=64, workers=None, **kwargs):\n",
    "    if woof:\n",
    "        path = URLs.IMAGEWOOF    # if woof \n",
    "    else:\n",
    "        path = URLs.IMAGENETTE\n",
    "    path = untar_data(path)\n",
    "    print('data path  ', path)\n",
    "    n_gpus = num_distrib() or 1\n",
    "    if workers is None: workers = min(8, num_cpus()//n_gpus)\n",
    "    return (ImageList.from_folder(path).split_by_folder(valid='val')\n",
    "            .label_from_folder().transform(([flip_lr(p=0.5)], []), size=size)\n",
    "            .databunch(bs=bs, num_workers=workers)\n",
    "            .presize(size, scale=(0.35,1))\n",
    "            .normalize(imagenet_stats))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_learn(\n",
    "        gpu:Param(\"GPU to run on\", str)=None,\n",
    "        woof: Param(\"Use imagewoof (otherwise imagenette)\", int)=1,\n",
    "        size: Param(\"Size (px: 128,192,224)\", int)=128,\n",
    "        alpha: Param(\"Alpha\", float)=0.99, \n",
    "        mom: Param(\"Momentum\", float)=0.95, #? 0.9\n",
    "        eps: Param(\"epsilon\", float)=1e-6,\n",
    "        bs: Param(\"Batch size\", int)=64,\n",
    "        mixup: Param(\"Mixup\", float)=0.,\n",
    "        opt: Param(\"Optimizer (adam,rms,sgd)\", str)='ranger',\n",
    "        sa: Param(\"Self-attention\", int)=0,\n",
    "        sym: Param(\"Symmetry for self-attention\", int)=0,\n",
    "        model: Param('model as partial', callable) = xresnet50\n",
    "        ):\n",
    " \n",
    "    if   opt=='adam' : opt_func = partial(optim.Adam, betas=(mom,alpha), eps=eps)\n",
    "    elif opt=='ranger'  : opt_func = partial(Ranger,  betas=(mom,alpha), eps=eps)\n",
    "    data = get_data(size, woof, bs)\n",
    "    learn = (Learner(data, model(), wd=1e-2, opt_func=opt_func,\n",
    "             metrics=[accuracy,top_k_accuracy],\n",
    "             bn_wd=False, true_wd=True,\n",
    "             loss_func = LabelSmoothingCrossEntropy(),))\n",
    "    print('Learn path', learn.path)\n",
    "    if mixup: learn = learn.mixup(alpha=mixup)\n",
    "    return learn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ResBlock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NewResBlock(Module):\n",
    "    def __init__(self, expansion, ni, nh, stride=1, \n",
    "                 conv_layer=ConvLayer, act_fn=act_fn, bn_1st=True,\n",
    "                 pool=nn.AvgPool2d(2, ceil_mode=True), sa=False,sym=False, zero_bn=True):\n",
    "        nf,ni = nh*expansion,ni*expansion\n",
    "        self.reduce = noop if stride==1 else pool\n",
    "        layers  = [(f\"conv_0\", conv_layer(ni, nh, 3, stride=stride, act_fn=act_fn, bn_1st=bn_1st)),\n",
    "                   (f\"conv_1\", conv_layer(nh, nf, 3, zero_bn=zero_bn, act=False, bn_1st=bn_1st))\n",
    "        ] if expansion == 1 else [\n",
    "                   (f\"conv_0\",conv_layer(ni, nh, 1, act_fn=act_fn, bn_1st=bn_1st)),\n",
    "                   (f\"conv_1\",conv_layer(nh, nh, 3, stride=1, act_fn=act_fn, bn_1st=bn_1st)), #!!!\n",
    "                   (f\"conv_2\",conv_layer(nh, nf, 1, zero_bn=zero_bn, act=False, bn_1st=bn_1st))\n",
    "        ]\n",
    "        if sa: layers.append(('sa', SimpleSelfAttention(nf,ks=1,sym=sym)))\n",
    "        self.convs = nn.Sequential(OrderedDict(layers))\n",
    "        self.idconv = noop if ni==nf else conv_layer(ni, nf, 1, act=False)\n",
    "        self.merge =act_fn\n",
    "\n",
    "    def forward(self, x): \n",
    "        o = self.reduce(x)\n",
    "        return self.merge(self.convs(o) + self.idconv(o))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.004\n",
    "epochs = 5\n",
    "moms = (0.95,0.95)\n",
    "start_pct = 0.72\n",
    "size=128\n",
    "bs=64"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Constructor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = xresnet50(c_out=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.block = NewResBlock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "pool = MaxBlurPool2d(3, True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.pool = pool\n",
    "model.stem_pool = pool"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.stem_sizes = [3,32,64,64]\n",
    "\n",
    "model.act_fn= Mish()\n",
    "model.sa = True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## repr model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  model xresnet50\n",
       "  (stem): Sequential(\n",
       "    (conv_0): ConvLayer(\n",
       "      (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (conv_1): ConvLayer(\n",
       "      (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (conv_2): ConvLayer(\n",
       "      (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (stem_pool): MaxBlurPool2d()\n",
       "  )\n",
       "  (body): Sequential(\n",
       "    (l_0): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "          (sa): SimpleSelfAttention(\n",
       "            (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_1): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_3): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_2): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_3): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_4): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_5): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_3): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (head): Sequential(\n",
       "    (pool): AdaptiveAvgPool2d(output_size=1)\n",
       "    (flat): Flatten()\n",
       "    (fc): Linear(in_features=2048, out_features=10, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (conv_0): ConvLayer(\n",
       "    (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (conv_1): ConvLayer(\n",
       "    (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (conv_2): ConvLayer(\n",
       "    (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (stem_pool): MaxBlurPool2d()\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.stem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (l_0): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (sa): SimpleSelfAttention(\n",
       "          (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_1): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_3): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_2): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_3): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_4): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_5): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_3): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.body"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (pool): AdaptiveAvgPool2d(output_size=1)\n",
       "  (flat): Flatten()\n",
       "  (fc): Linear(in_features=2048, out_features=10, bias=True)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.head"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lr find"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "        <style>\n",
       "            /* Turns off some styling */\n",
       "            progress {\n",
       "                /* gets rid of default border in Firefox and Opera. */\n",
       "                border: none;\n",
       "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "                background-size: auto;\n",
       "            }\n",
       "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "                background: #F44336;\n",
       "            }\n",
       "        </style>\n",
       "      <progress value='1' class='' max='2', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      50.00% [1/2 00:54<00:54]\n",
       "    </div>\n",
       "    \n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2.349942</td>\n",
       "      <td>#na#</td>\n",
       "      <td>00:54</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table><p>\n",
       "\n",
       "    <div>\n",
       "        <style>\n",
       "            /* Turns off some styling */\n",
       "            progress {\n",
       "                /* gets rid of default border in Firefox and Opera. */\n",
       "                border: none;\n",
       "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "                background-size: auto;\n",
       "            }\n",
       "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "                background: #F44336;\n",
       "            }\n",
       "        </style>\n",
       "      <progress value='22' class='' max='70', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      31.43% [22/70 00:17<00:38 8.7886]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "set state called\n",
      "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
     ]
    }
   ],
   "source": [
    "learn.lr_find()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "learn.recorder.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# epochs 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.963323</td>\n",
       "      <td>1.977032</td>\n",
       "      <td>0.366251</td>\n",
       "      <td>0.848053</td>\n",
       "      <td>01:17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.722323</td>\n",
       "      <td>1.649421</td>\n",
       "      <td>0.486892</td>\n",
       "      <td>0.910919</td>\n",
       "      <td>01:17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.526365</td>\n",
       "      <td>1.471607</td>\n",
       "      <td>0.583609</td>\n",
       "      <td>0.931535</td>\n",
       "      <td>01:17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.391993</td>\n",
       "      <td>1.271971</td>\n",
       "      <td>0.680326</td>\n",
       "      <td>0.958768</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.176966</td>\n",
       "      <td>1.140754</td>\n",
       "      <td>0.751082</td>\n",
       "      <td>0.967422</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.942389</td>\n",
       "      <td>2.153978</td>\n",
       "      <td>0.365487</td>\n",
       "      <td>0.829982</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.701563</td>\n",
       "      <td>1.560801</td>\n",
       "      <td>0.523034</td>\n",
       "      <td>0.919572</td>\n",
       "      <td>01:17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.538731</td>\n",
       "      <td>1.550234</td>\n",
       "      <td>0.553831</td>\n",
       "      <td>0.923645</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.426067</td>\n",
       "      <td>1.310349</td>\n",
       "      <td>0.657419</td>\n",
       "      <td>0.953169</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.198794</td>\n",
       "      <td>1.154284</td>\n",
       "      <td>0.734029</td>\n",
       "      <td>0.968694</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.990563</td>\n",
       "      <td>1.801579</td>\n",
       "      <td>0.432935</td>\n",
       "      <td>0.878595</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.714620</td>\n",
       "      <td>1.611366</td>\n",
       "      <td>0.517944</td>\n",
       "      <td>0.912191</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.541502</td>\n",
       "      <td>1.567000</td>\n",
       "      <td>0.550776</td>\n",
       "      <td>0.933571</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.430198</td>\n",
       "      <td>1.340359</td>\n",
       "      <td>0.651311</td>\n",
       "      <td>0.948333</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.207800</td>\n",
       "      <td>1.173040</td>\n",
       "      <td>0.728939</td>\n",
       "      <td>0.966149</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.977972</td>\n",
       "      <td>1.936406</td>\n",
       "      <td>0.397811</td>\n",
       "      <td>0.860524</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.734402</td>\n",
       "      <td>1.652425</td>\n",
       "      <td>0.486129</td>\n",
       "      <td>0.913209</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.556562</td>\n",
       "      <td>1.787848</td>\n",
       "      <td>0.465004</td>\n",
       "      <td>0.857725</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.426674</td>\n",
       "      <td>1.298124</td>\n",
       "      <td>0.662510</td>\n",
       "      <td>0.957496</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.205295</td>\n",
       "      <td>1.166016</td>\n",
       "      <td>0.727412</td>\n",
       "      <td>0.967422</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.943908</td>\n",
       "      <td>1.907041</td>\n",
       "      <td>0.399338</td>\n",
       "      <td>0.872996</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.698360</td>\n",
       "      <td>1.536516</td>\n",
       "      <td>0.551031</td>\n",
       "      <td>0.930262</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.541068</td>\n",
       "      <td>1.535277</td>\n",
       "      <td>0.555358</td>\n",
       "      <td>0.919063</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.417434</td>\n",
       "      <td>1.337035</td>\n",
       "      <td>0.649784</td>\n",
       "      <td>0.947060</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.210974</td>\n",
       "      <td>1.155365</td>\n",
       "      <td>0.737847</td>\n",
       "      <td>0.968949</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# e5 results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = np.array([0.751082, 0.734029, 0.728939, 0.727412, 0.737847])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.7358618000000001, 0.008464974220870393)"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.mean(), acc.std()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# epochs 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "epochs = 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.943416</td>\n",
       "      <td>1.928469</td>\n",
       "      <td>0.394248</td>\n",
       "      <td>0.859761</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.673772</td>\n",
       "      <td>1.610048</td>\n",
       "      <td>0.514635</td>\n",
       "      <td>0.911173</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.519241</td>\n",
       "      <td>2.080176</td>\n",
       "      <td>0.466785</td>\n",
       "      <td>0.865869</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.420066</td>\n",
       "      <td>1.301647</td>\n",
       "      <td>0.665564</td>\n",
       "      <td>0.953423</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.302293</td>\n",
       "      <td>1.377564</td>\n",
       "      <td>0.649275</td>\n",
       "      <td>0.955205</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.232298</td>\n",
       "      <td>1.270189</td>\n",
       "      <td>0.676508</td>\n",
       "      <td>0.958259</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.161335</td>\n",
       "      <td>1.201873</td>\n",
       "      <td>0.717994</td>\n",
       "      <td>0.963095</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.127159</td>\n",
       "      <td>1.097633</td>\n",
       "      <td>0.756681</td>\n",
       "      <td>0.970221</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.081211</td>\n",
       "      <td>1.112571</td>\n",
       "      <td>0.752863</td>\n",
       "      <td>0.970985</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.011137</td>\n",
       "      <td>1.045282</td>\n",
       "      <td>0.780097</td>\n",
       "      <td>0.977602</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.967210</td>\n",
       "      <td>1.115547</td>\n",
       "      <td>0.748537</td>\n",
       "      <td>0.969203</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.952363</td>\n",
       "      <td>1.005846</td>\n",
       "      <td>0.792314</td>\n",
       "      <td>0.974803</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.912387</td>\n",
       "      <td>1.047385</td>\n",
       "      <td>0.782642</td>\n",
       "      <td>0.975566</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.887340</td>\n",
       "      <td>0.966329</td>\n",
       "      <td>0.814202</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.855866</td>\n",
       "      <td>1.008806</td>\n",
       "      <td>0.796131</td>\n",
       "      <td>0.970985</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.832320</td>\n",
       "      <td>0.953239</td>\n",
       "      <td>0.825910</td>\n",
       "      <td>0.977348</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.752561</td>\n",
       "      <td>0.963861</td>\n",
       "      <td>0.815729</td>\n",
       "      <td>0.976839</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.692555</td>\n",
       "      <td>0.891844</td>\n",
       "      <td>0.846526</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.646652</td>\n",
       "      <td>0.872125</td>\n",
       "      <td>0.857216</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.627106</td>\n",
       "      <td>0.865264</td>\n",
       "      <td>0.862560</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n/w+mhW20zzd/kAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_metrics()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.961606</td>\n",
       "      <td>2.153965</td>\n",
       "      <td>0.373123</td>\n",
       "      <td>0.843472</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.702536</td>\n",
       "      <td>1.559264</td>\n",
       "      <td>0.532196</td>\n",
       "      <td>0.917536</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.530925</td>\n",
       "      <td>1.542643</td>\n",
       "      <td>0.536523</td>\n",
       "      <td>0.930008</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.385396</td>\n",
       "      <td>1.316860</td>\n",
       "      <td>0.664546</td>\n",
       "      <td>0.950369</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.298384</td>\n",
       "      <td>1.567240</td>\n",
       "      <td>0.559175</td>\n",
       "      <td>0.927971</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.228698</td>\n",
       "      <td>1.168621</td>\n",
       "      <td>0.728175</td>\n",
       "      <td>0.964113</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.143433</td>\n",
       "      <td>1.213950</td>\n",
       "      <td>0.692797</td>\n",
       "      <td>0.965386</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.105110</td>\n",
       "      <td>1.086371</td>\n",
       "      <td>0.768389</td>\n",
       "      <td>0.970476</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.061747</td>\n",
       "      <td>1.161878</td>\n",
       "      <td>0.732247</td>\n",
       "      <td>0.964113</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.007150</td>\n",
       "      <td>1.082388</td>\n",
       "      <td>0.765844</td>\n",
       "      <td>0.969458</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.966589</td>\n",
       "      <td>1.080919</td>\n",
       "      <td>0.759735</td>\n",
       "      <td>0.970221</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.938942</td>\n",
       "      <td>1.000963</td>\n",
       "      <td>0.797658</td>\n",
       "      <td>0.976330</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.907842</td>\n",
       "      <td>1.062788</td>\n",
       "      <td>0.773988</td>\n",
       "      <td>0.969967</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.883948</td>\n",
       "      <td>0.981376</td>\n",
       "      <td>0.811911</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.844357</td>\n",
       "      <td>1.099481</td>\n",
       "      <td>0.781878</td>\n",
       "      <td>0.966149</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.804426</td>\n",
       "      <td>0.955378</td>\n",
       "      <td>0.819801</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.753325</td>\n",
       "      <td>0.950291</td>\n",
       "      <td>0.817765</td>\n",
       "      <td>0.975821</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.695605</td>\n",
       "      <td>0.900082</td>\n",
       "      <td>0.839399</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.643547</td>\n",
       "      <td>0.876142</td>\n",
       "      <td>0.852380</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.618395</td>\n",
       "      <td>0.875206</td>\n",
       "      <td>0.853143</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n+n9KSD6w9YbUAQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.916626</td>\n",
       "      <td>1.808507</td>\n",
       "      <td>0.448969</td>\n",
       "      <td>0.881140</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.673142</td>\n",
       "      <td>1.672925</td>\n",
       "      <td>0.483838</td>\n",
       "      <td>0.918554</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.520453</td>\n",
       "      <td>1.727637</td>\n",
       "      <td>0.475694</td>\n",
       "      <td>0.904301</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.404522</td>\n",
       "      <td>1.335312</td>\n",
       "      <td>0.633495</td>\n",
       "      <td>0.952151</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.313466</td>\n",
       "      <td>1.437595</td>\n",
       "      <td>0.604225</td>\n",
       "      <td>0.951387</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.224895</td>\n",
       "      <td>1.177850</td>\n",
       "      <td>0.725884</td>\n",
       "      <td>0.962840</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.156939</td>\n",
       "      <td>1.211276</td>\n",
       "      <td>0.700178</td>\n",
       "      <td>0.964368</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.127651</td>\n",
       "      <td>1.162639</td>\n",
       "      <td>0.731484</td>\n",
       "      <td>0.965386</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.048974</td>\n",
       "      <td>1.089733</td>\n",
       "      <td>0.769916</td>\n",
       "      <td>0.967931</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.010913</td>\n",
       "      <td>1.021230</td>\n",
       "      <td>0.787732</td>\n",
       "      <td>0.978621</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.969845</td>\n",
       "      <td>1.175298</td>\n",
       "      <td>0.740901</td>\n",
       "      <td>0.960550</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.929149</td>\n",
       "      <td>1.032084</td>\n",
       "      <td>0.789005</td>\n",
       "      <td>0.976839</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.901831</td>\n",
       "      <td>1.045267</td>\n",
       "      <td>0.781115</td>\n",
       "      <td>0.971749</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.876330</td>\n",
       "      <td>1.003242</td>\n",
       "      <td>0.798931</td>\n",
       "      <td>0.970476</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.855379</td>\n",
       "      <td>0.984722</td>\n",
       "      <td>0.806567</td>\n",
       "      <td>0.976075</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.817916</td>\n",
       "      <td>0.949817</td>\n",
       "      <td>0.817002</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.750932</td>\n",
       "      <td>0.944812</td>\n",
       "      <td>0.828964</td>\n",
       "      <td>0.974803</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.693268</td>\n",
       "      <td>0.896473</td>\n",
       "      <td>0.842454</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.638679</td>\n",
       "      <td>0.870139</td>\n",
       "      <td>0.854416</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.621920</td>\n",
       "      <td>0.871715</td>\n",
       "      <td>0.853652</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.952731</td>\n",
       "      <td>2.368813</td>\n",
       "      <td>0.314075</td>\n",
       "      <td>0.804276</td>\n",
       "      <td>01:21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.708982</td>\n",
       "      <td>1.540228</td>\n",
       "      <td>0.549758</td>\n",
       "      <td>0.920845</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.545884</td>\n",
       "      <td>1.641640</td>\n",
       "      <td>0.484093</td>\n",
       "      <td>0.905828</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.426899</td>\n",
       "      <td>1.343199</td>\n",
       "      <td>0.639603</td>\n",
       "      <td>0.955205</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.329910</td>\n",
       "      <td>1.612158</td>\n",
       "      <td>0.562484</td>\n",
       "      <td>0.928481</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.258860</td>\n",
       "      <td>1.186621</td>\n",
       "      <td>0.723848</td>\n",
       "      <td>0.962331</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.190930</td>\n",
       "      <td>1.333129</td>\n",
       "      <td>0.642657</td>\n",
       "      <td>0.945024</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.117766</td>\n",
       "      <td>1.113254</td>\n",
       "      <td>0.756172</td>\n",
       "      <td>0.967676</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.065868</td>\n",
       "      <td>1.189973</td>\n",
       "      <td>0.719267</td>\n",
       "      <td>0.954187</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.041373</td>\n",
       "      <td>1.068669</td>\n",
       "      <td>0.765335</td>\n",
       "      <td>0.969203</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.992880</td>\n",
       "      <td>1.099231</td>\n",
       "      <td>0.757699</td>\n",
       "      <td>0.967931</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.964166</td>\n",
       "      <td>1.033103</td>\n",
       "      <td>0.785187</td>\n",
       "      <td>0.974039</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.911251</td>\n",
       "      <td>1.046187</td>\n",
       "      <td>0.778061</td>\n",
       "      <td>0.970985</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.907942</td>\n",
       "      <td>1.003371</td>\n",
       "      <td>0.795877</td>\n",
       "      <td>0.973785</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.867460</td>\n",
       "      <td>1.068166</td>\n",
       "      <td>0.777297</td>\n",
       "      <td>0.966913</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.826036</td>\n",
       "      <td>0.958552</td>\n",
       "      <td>0.818020</td>\n",
       "      <td>0.980148</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.756381</td>\n",
       "      <td>0.952378</td>\n",
       "      <td>0.812930</td>\n",
       "      <td>0.975312</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.701533</td>\n",
       "      <td>0.900043</td>\n",
       "      <td>0.841945</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.653172</td>\n",
       "      <td>0.891168</td>\n",
       "      <td>0.839399</td>\n",
       "      <td>0.981420</td>\n",
       "      <td>01:18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.622017</td>\n",
       "      <td>0.886066</td>\n",
       "      <td>0.844490</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<Figure size 432x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_metrics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.983375</td>\n",
       "      <td>1.995226</td>\n",
       "      <td>0.371341</td>\n",
       "      <td>0.858997</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.757021</td>\n",
       "      <td>1.607430</td>\n",
       "      <td>0.505981</td>\n",
       "      <td>0.913973</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.548435</td>\n",
       "      <td>2.087968</td>\n",
       "      <td>0.389921</td>\n",
       "      <td>0.876559</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.430715</td>\n",
       "      <td>1.341806</td>\n",
       "      <td>0.646984</td>\n",
       "      <td>0.950369</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.321271</td>\n",
       "      <td>1.515534</td>\n",
       "      <td>0.587172</td>\n",
       "      <td>0.934843</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.244056</td>\n",
       "      <td>1.260892</td>\n",
       "      <td>0.677272</td>\n",
       "      <td>0.958768</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.176282</td>\n",
       "      <td>1.223348</td>\n",
       "      <td>0.701705</td>\n",
       "      <td>0.962077</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.121144</td>\n",
       "      <td>1.127191</td>\n",
       "      <td>0.738610</td>\n",
       "      <td>0.971749</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.069201</td>\n",
       "      <td>1.119418</td>\n",
       "      <td>0.751336</td>\n",
       "      <td>0.964368</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.026584</td>\n",
       "      <td>1.034289</td>\n",
       "      <td>0.783151</td>\n",
       "      <td>0.976584</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.995214</td>\n",
       "      <td>1.066997</td>\n",
       "      <td>0.772461</td>\n",
       "      <td>0.973021</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.948872</td>\n",
       "      <td>1.016904</td>\n",
       "      <td>0.796895</td>\n",
       "      <td>0.976584</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.910607</td>\n",
       "      <td>1.074096</td>\n",
       "      <td>0.768134</td>\n",
       "      <td>0.965895</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.895071</td>\n",
       "      <td>0.987282</td>\n",
       "      <td>0.797149</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.853095</td>\n",
       "      <td>1.031282</td>\n",
       "      <td>0.784933</td>\n",
       "      <td>0.973785</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.837286</td>\n",
       "      <td>0.948308</td>\n",
       "      <td>0.823110</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.760676</td>\n",
       "      <td>0.945890</td>\n",
       "      <td>0.823110</td>\n",
       "      <td>0.978875</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.701497</td>\n",
       "      <td>0.895582</td>\n",
       "      <td>0.841690</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.652139</td>\n",
       "      <td>0.883442</td>\n",
       "      <td>0.850853</td>\n",
       "      <td>0.980657</td>\n",
       "      <td>01:20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.628503</td>\n",
       "      <td>0.882337</td>\n",
       "      <td>0.847544</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>01:19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# e20 results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = np.array([0.862560, 0.853143, 0.853652, 0.844490, 0.847544 ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.8522777999999999, 0.006187395652453472)"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.mean(), acc.std()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
